iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Mobile Development

[Android Studio & Spring boot 30天挑戰]系列 第 16

[Android Studio & Spring boot 30天挑戰] Day16- MQTT(下)

  • 分享至 

  • xImage
  •  

第16天的主題是繼續介紹MQTT,我們將探討如何使用Docker來搭建MQTT Broker。在這篇文章中,我們將一步步引導您如何使用Docker來搭建自己的MQTT Broker。

使用流程

第1步:安裝 Docker

首先,您需要確保您的系統已經安裝了 Docker 。您可以根據您的操作系統選擇合適的Docker安裝方法。

第2步:下載 Mosquitto Docker 鏡像

打開終端或命令提示符,運行以下命令來下載Mosquitto的Docker鏡像:

docker pull eclipse-mosquitto

第3步:設定 Config 檔

新增以下路徑 C:\mosquitto\config 並且分別新增下列三個 .conf 檔:
https://ithelp.ithome.com.tw/upload/images/20230822/20150369Y7KzGOe9jf.png

第3步:設定各個 .conf 檔:

  • mosquitto.conf:
allow_anonymous false //是否允許匿名連接到 broker

password_file /mosquitto/config/passwd //存放帳密的位置

listener 1883 //Port 為1883
protocol mqtt //服務為 MQTT
  • password.conf
    拿來存放帳號密碼,這裡的密碼必須加密過
chocolee:$7$101$StNq9H9L0tuD0Zco$vlq03RzIABBRb+LBiDiphH+aSvDJQKxJaEk2NjNkvOfJsKzgYBloQJg2ZvbKkNaWtq5YiVch/X05F/3oQfNKrg==
  • acl.conf
    用來讓 broker 知道這個帳號的人可以使用那些 Topic
user chocolee
topic readwrite demo/#

第3步:啟動 containers:

這裡將 config 檔掛載到 containers 裡的 config 檔

docker run -d --name mosquitto -p 9001:1883 -v C:/mosquitto/config:/mosquitto/config eclipse-mosquitto

第4步:使用 Android 和 MQTTX 測試:

設定對應的變數就可以使用了。

  • MQTTX
    https://ithelp.ithome.com.tw/upload/images/20230822/20150369YL2tPMRueH.png
  • Android
    private String brokerUrl = "tcp://192.168.1.118:9001";//你連的 wifi 的 ip
    private String clientId = "mqttx_01fa1dad";
    String username = "chocolee"; // 你的用户名
    String password = "123"; // 你的密码
    
    
     try {
            // Set up the persistence layer
            MemoryPersistence persistence = new MemoryPersistence();

            // Initialize the MQTT client
            client = new MqttClient(brokerUrl, clientId, persistence);

            // Set up the connection options
            MqttConnectOptions connectOptions = new MqttConnectOptions();

            connectOptions.setCleanSession(true);
            connectOptions.setUserName(username);
            Log.e("TAG", "connect: " + Arrays.toString(password.toCharArray()));
            connectOptions.setPassword(password.toCharArray());
            // Connect to the broker
            client.connect(connectOptions);

最後來看看 MQTTX 的測試解果!!
https://ithelp.ithome.com.tw/upload/images/20230822/20150369QFUnMNTQUb.png


上一篇
[Android Studio & Spring boot 30天挑戰] Day15- MQTT(中)
下一篇
[Android Studio & Spring boot 30天挑戰] D17 - 讀取照片
系列文
[Android Studio & Spring boot 30天挑戰]30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言